package com.juben.svr.demos.web;

import com.juben.svr.domain.ApiResponse;
import com.juben.svr.domain.Conversations;
import com.juben.svr.domain.User;
import com.juben.svr.mapper.ConversationMapper;
import com.juben.svr.mapper.usermapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 会话列表控制层
 */
@RestController
@CrossOrigin(origins = "http://localhost:5173",allowedHeaders = "*",allowCredentials = "true")
public class ConversationController {

    @Autowired
    private usermapper userMapper;

    @Autowired
    private ConversationMapper conversationMapper;

    /**
     * 已建立会话
     */
    @GetMapping("/Conversation/already")
    public ResponseEntity<ApiResponse> ConversationAlready(@RequestParam Integer userId){
        List<Conversations> list = conversationMapper.selectByUserId(userId);
        return ResponseEntity.ok(new ApiResponse(200,"建立会话成功",list));
    }
    /**
     * 处理 GET 请求，路由地址为 /sessionList/not。
     * 接收用户 ID，获取除了当前用户以外可以建立会话的用户 ID 列表。
     * 此外，将当前用户 ID 加入列表中以便后续查询。
     * 查询得到可建立会话的用户列表，并将结果返回。
     * */
    //查询可建立会话的用户
    @GetMapping("/Conversation/not")
    public ResponseEntity<ApiResponse> ConversationNot(@RequestParam Integer userId){
        List<Integer> list = conversationMapper.selectUserIdByUserId(userId);
        list.add(userId);
        List<User> cloudList = userMapper.getUserList(list);
        return ResponseEntity.ok(new ApiResponse(200,"查询可建立会话用户成功",cloudList));
    }

    /**
     * 处理 GET 请求，路由为 /createSession。
     * 接收三个请求参数：指定用户 ID、会话对象 ID 和会话对象名称。
     * 创建新的会话对象并插入到数据库中。
     * 后续检查是否需要为对方用户创建相应会话，如果对方没有会话则插入相应记录。*/
    @GetMapping("/Conversation/createSession")
    public ResponseEntity<ApiResponse> createSession(@RequestParam Integer userId,@RequestParam Integer toUserId,@RequestParam String toUserName,@RequestParam String avatar){
        System.out.println("创建会话"+userId+"--"+toUserId+"--"+toUserName+"--"+avatar);
        Conversations sessionList = new Conversations();
        Integer integer1 = conversationMapper.selectIdByUser(userId, toUserId);
        System.out.println("是否已经建立会话:"+integer1);
        if (integer1 == null || integer1 <= 0){
        //创建会话

        sessionList.setUser_id(userId);
        sessionList.setUn_read_count(0);
        sessionList.setList_name(toUserName);
        sessionList.setToUserId(toUserId);
//        sessionList.setAvatar(avatar);
        conversationMapper.insert(sessionList);
        }
        //判断和我是否已经建立会话，没有也需要建立
        Integer integer = conversationMapper.selectIdByUser(toUserId, userId);  //注意两个ID的顺序
        System.out.println("对方是否已经建立会话:"+integer);
        if (integer == null || integer <= 0){
            System.out.println("对方没有建立会话，需要建立");
            User user = userMapper.getUserById(userId);     //获取当前用户信息
            sessionList.setUser_id(toUserId);   //设置会话列表的用户ID
            sessionList.setList_name(user.getUname());
//            sessionList.setAvatar(user.getHeadlmg());
            sessionList.setToUserId(userId);
            conversationMapper.insert(sessionList); //插入会话
        }
        return ResponseEntity.ok(new ApiResponse(200,"创建会话成功",null));
    }



    /**处理 GET 请求，路由为 /delSession。
     接收会话 ID，通过 deleteByPrimaryKey 方法删除相应会话记录，并返回成功的结果。
     * */
    //删除会话
    @GetMapping("/Conversation/delSession")
    public ResponseEntity<ApiResponse> delSession(@RequestParam Integer id){
        conversationMapper.deleteConversation(id);
        return ResponseEntity.ok(new ApiResponse(200,"删除会话成功",null));
    }


}
